/*
 *PerfilUsuarioDAO.java
 * Author: Matersys Group.
 * Fecha: 1 de Abril de 2011.
 */

package dao;
import entity.PerfilUsuarioEntity;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import utils.HibernateUtil;

/**
 *
 * @author NAYELI
 */
public class PerfilUsuarioDAO {
    
        public static synchronized int savePerfilUsuario(PerfilUsuarioEntity ePerfilUsuario){
        	Session session=null;
		Transaction transaction=null;
		try{
                        session = HibernateUtil.getSessionFactory().openSession();
			transaction = session.beginTransaction();
			session.save(ePerfilUsuario);
			transaction.commit();
			session.close();
                        return ePerfilUsuario.getIdperfil();

		}catch(org.hibernate.exception.GenericJDBCException excepts){
			transaction.rollback();
			if(session!= null&& session.isOpen())
				session.close();
			return -1;
		}catch(Exception e){
                    transaction.rollback();
			if(session!= null&& session.isOpen())
				session.close();
			return -1;
		}finally {
			if(session!= null&& session.isOpen())
				session.close();

		}

            //PerfilUsuarioEntity pue=new PerfilUsuarioEntity ();
            //PerfilUsuarioDAO ted=new PerfilUsuarioDAO();
             //List <PerfilUsuarioEntity> lista2= PerfilUsuarioDAO.getAllPerfilUsuario();
		//if(lista2 != null){
		//	for(PerfilUsuarioEntity te : lista2){
		//		System.out.println(te.getIdperfil()+" "+ te.getValorperfil());
		//	}
		//}

            //ud.getAllUsuarios();
              //if(UsuarioDAO.getAllUsuarios()!=null){
            //System.out.println(ud.getAllUsuarios()+"Valores de la lista");


        }
        //Método que se encarga de consultar una lista de Perfiles de Usuario.
        public static List<PerfilUsuarioEntity> getAllPerfilUsuario(){
		Session session = HibernateUtil.getSessionFactory().openSession();
		List <PerfilUsuarioEntity>lista=null;
		try{
			String query ="FROM PerfilUsuarioEntity";
			lista=session.createQuery(query).list();
			session.close();
		}catch(org.hibernate.exception.GenericJDBCException excepts){
			if(session!= null&& session.isOpen())
				session.close();

		}catch(Exception e){
			if(session!= null&& session.isOpen())
				session.close();

		} finally{
			if(session!= null && session.isOpen())
				session.close();

		}
		return lista;
	}

        //Método que se encarga de eliminar un perfil de usuario por id del perfil.
      public static synchronized void eliminaPerfilUsuario(int idProducto) {
        Session session = null;
        Transaction transaction = null;

        try {
            session = HibernateUtil.getSessionFactory().openSession();
            transaction = session.beginTransaction();

          //  PerfilUsuarioEntity perfilUsuario=getPerfilUsuarioPorID(idPerfil);

                  	//Producto prod = getProductoPorID(idProducto);


           // session.delete(perfilUsuario);
            transaction.commit();

            session.close();
        } catch (org.hibernate.exception.GenericJDBCException excepts) {
            transaction.rollback();

            if (session != null && session.isOpen()) {
                session.close();
            }

        } catch (Exception e) {
            transaction.rollback();

            if (session != null && session.isOpen()) {
                session.close();
            }

        } finally {
            if (session != null && session.isOpen()) {
                session.close();
            }

        }
    }



	public static PerfilUsuarioEntity getPerfilUsuarioPorID(int idPerfil){
		Session session = HibernateUtil.getSessionFactory().openSession();
		PerfilUsuarioEntity perfilUsuario=null;
		try{
			String query =" FROM  PerfilUsuarioEntity where idperfil="+idPerfil+1;
			//String query =" FROM  Venta where fkVentaProducto.idProducto="+idPerfil+" AND fkVentaProducto.idVenta="+1;
			 perfilUsuario=(PerfilUsuarioEntity)session.createQuery(query).uniqueResult();
			session.close();
		}catch(org.hibernate.exception.GenericJDBCException excepts){
			if(session!= null&& session.isOpen())
				session.close();

		}catch(Exception e){
			if(session!= null&& session.isOpen())
				session.close();

		} finally{
			if(session!= null && session.isOpen())
				session.close();

		}
		return  perfilUsuario;
	}


        public static void main(String[] args){
            PerfilUsuarioEntity ePerfilUsuario = new PerfilUsuarioEntity();
            ePerfilUsuario.setValorperfil("Administrado");
            PerfilUsuarioDAO perfilUsuario = new PerfilUsuarioDAO();
            perfilUsuario.savePerfilUsuario(ePerfilUsuario);
        }

    }

